上幾篇在講 Express.js 今天來寫個小實例吧!
下面是一個可以直接執行的 Express.js 範例,實作一個簡單的 CRUD API
const express = require("express");
const app = express();
app.use(express.json());
let users = [
{ id: 1, name: "Amy" },
{ id: 2, name: "John" }
];
// GET:取得所有使用者
app.get("/users", (req, res) => {
res.json(users);
});
// POST:新增使用者
app.post("/users", (req, res) => {
const { name } = req.body || {};
if (typeof name !== "string" || !name.trim()) {
return res.status(400).json({
message: "name 為必填字串"
});
}
const user = {
id: Math.max(0, ...users.map(u => u.id)) + 1,
name: name.trim()
};
users.push(user);
res.status(201).json(user);
});
// DELETE:刪除使用者
app.delete("/users/:id", (req, res) => {
const id = Number(req.params.id);
const exists = users.some(u => u.id === id);
if (!exists) {
return res.status(404).json({
message: "找不到使用者"
});
}
users = users.filter(u => u.id !== id);
res.json({ message: "刪除成功" });
});
app.listen(3000, () => {
console.log("Server running on port 3000");
});
這個範例使用記憶體陣列儲存資料,因此伺服器重新啟動後,資料會恢復成初始內容。正式專案通常會串接資料庫。
資料庫的部分後面幾篇文章也會提到~
如果要把 Express.js 應用在 React 專案要如何串接?
假設 React 前端需要取得使用者清單:
useEffect(() => {
fetch("http://localhost:3000/users")
.then(res => res.json())
.then(data => console.log(data));
}, []);
Express.js 後端:
app.get("/users", (req, res) => {
res.json([
{ id: 1, name: "Amy" },
{ id: 2, name: "John" }
]);
});
如果 React 和 Express 在不同 Origin(例如不同 Port),瀏覽器可能受到 CORS 限制。開發時可以透過 Vite Proxy 或設定 Express CORS Middleware 解決。
結論:
Node.js 提供 JavaScript 的伺服器執行環境,而 Express.js 提供更方便的方式來接收 HTTP Request、處理路由、執行 Middleware,以及回傳 Response。
真的要感謝 Express.js 幫我們處理掉很多事情呢!